La conception fondamentale d'un système informatique est définie par la relation entre l'Unité de traitement et la mémoire. La principale différence réside dans le fait que les instructions et les données partagent un chemin commun ou utilisent des canaux indépendants.
1. Architecture de von Neumann
Utilisée par les systèmes généralistes tels que x86-64, ce modèle dispose d'un espace mémoire unifié. L'unité centrale accède au code et aux données via un seul bus, entraînant le bottleneck de von Neumann: la latence subie lorsque l'unité centrale doit multiplexer le bus entre la récupération des instructions et l'accès aux opérandes.
2. Architecture de Harvard
Fréquente dans les processeurs spécialisés et les implémentations de cache L1 ARMv8-A d'implémentations de cache L1, ce design utilise un stockage mémoire physique séparé et des voies de signalisation distinctes. Cela permet une récupération simultanée d'un opécode et d'un opérande, augmentant considérablement le débit.
Diagramme : cycle de récupération de mémoire dans une architecture de von Neumann montrant l'utilisation séquentielle du bus.
3. Convergence structurelle
Les systèmes HPC modernes utilisent souvent une architecture de Harvard modifiée. Elles se comportent comme des machines Harvard au niveau du cache L1 (cache I et cache D séparés) pour maximiser la vitesse tout en conservant un modèle von Neumann en mémoire principale pour assurer la flexibilité du développement.